//////////////////////////////////////////////////
// STUDENT RESEARCH PROJECT						//
// UNIVERSITY OF HAGEN 2012						//
// File:	DataContainer.h						//
// Date:	01.09.2012							//
// Author:	Max Pejs							//
//////////////////////////////////////////////////

#ifndef _WEATHER_DATA_CONTAINER_H_
#define _WEATHER_DATA_CONTAINER_H_

#include "typedef.h"

#ifndef NULL
#define NULL 0
#endif

#define RING_BUFFER_SIZE 128

class DataContainer
{
private:
	UInt8 ringBuffer[RING_BUFFER_SIZE + 1];
	UInt8 size;
	UInt8 begin;
	UInt8 end;
	
	static DataContainer * owner;

	UInt8 ringBufferIsFull();
	UInt8 ringBufferIsEmpty(void);

protected:
	///////////////////////////////////////////////////////////
	//		Protected because of singleton pattern			 //
	///////////////////////////////////////////////////////////
	DataContainer();

public:
	UInt8 addBit(UInt8 bit);
	UInt8 getBit(void);
	UInt8 getSize(void);

	///////////////////////////////////////////////////////////
	// Returns the pointer to the single object of the class //
	///////////////////////////////////////////////////////////
	static DataContainer * GetInstance(void);
};

#endif	//_WEATHER_DATA_CONTAINER_H_